package negocio;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINADOR", discriminatorType=DiscriminatorType.STRING,length=100)
@Table(name="LVTP_DESCUENTOS")
@org.hibernate.annotations.ForceDiscriminator
public abstract class Descuento
{
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column (name="ID_DESCUENTO")
	private Integer codigo;
	
	@Column (name="N_DESCUENTO", nullable=false, length=50)
	private String nombre;
	
	@Column (name="DESCUENTO")
	private Float descuento;

	public Descuento(){
	}
	
	public Descuento(Integer codigo, String nombre, Float descuento) {
		this.codigo = codigo;
		this.nombre = nombre;
		this.descuento = descuento;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Integer getCodigo() {
		return codigo;
	}
	
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public Float getDescuento() {
		return descuento;
	}

	public void setDescuento(Float descuento) {
		this.descuento = descuento;
	}
	
	public boolean esDescuentoTotal(){
		return false;
	}

	public String toString()
	{
		return String.format("{0} - {1} - {2}", codigo, nombre, descuento);
	}
	
	public boolean equals(Object obj)
	{
		if (obj != null && this.getClass().isInstance(obj)){
			Descuento tmp = (Descuento)obj;
			return codigo.equals(tmp.getCodigo());
		}
		return false;
	}
	
	public boolean puedeAplicarDescuento(PedidoItem item){
		return false;
	}
	
	public boolean puedeAplicarDescuento(Pedido pedido){
		return false;
	}
}
